Horizontal navigation
Allow users to quickly access essential site-wide utilities and global actions via a persistent, top-level navigation element that also reinforces brand identity
#Examples
This layout is the standard for Siteimprove products and integrations.
Composition:
- Logo: Reinforces brand identity and provides a link back to the homepage.
- Actions: Provide quick access to essential system-level actions (e.g. Sign out, Notifications, Profile, Settings, Account switching) through the usage of Buttons and ActionMenus.
- Skip to content: ( ): The "Skip to content" link allows keyboard users to navigate directly to the main content using the "Tab" key.
Learn more about the actions
prop in the Actions example below.
return (
<HorizontalNavigation
appLogo={{
icon: props.theme === "agentic-ai-2025" ? siteImproveLogoAgenticAi2025 : siteImproveLogo,
href: "https://my2.siteimprove.com",
title: "Go to main page",
"aria-label": "Siteimprove",
"data-observe-key": "top-nav-company-link",
}}
actions={actionsDummyData}
data-observe-key="top-nav"
skipToContentId="properties"
/>
);
#Title
The title
prop will add a title in the h1
element right after the logo.
Learn more about the actions
prop in the Actions example below.
<HorizontalNavigation
appLogo={{
icon: props.theme === "agentic-ai-2025" ? siteImproveLogoAgenticAi2025 : siteImproveLogo,
href: "https://my2.siteimprove.com",
title: "Go to main page",
"aria-label": "Siteimprove",
"data-observe-key": "top-nav-company-link",
}}
title="Page Report"
actions={actionsDummyData}
data-observe-key="top-nav"
skipToContentId="properties"
/>
#Actions
The actions
prop will render either ActionMenus or Buttons depending on what values you pass to it. To render an ActionMenu you pass ActionMenuProps
. To render a Button you can pass the following props from the ButtonProps
type: children
, onClick
, href
and openNew
plus optionally the following props from the TooltipProps
type to render a tooltip for the button: content
and placement
.
<HorizontalNavigation
appLogo={{
icon: props.theme === "agentic-ai-2025" ? siteImproveLogoAgenticAi2025 : siteImproveLogo,
href: "https://my2.siteimprove.com",
title: "Go to main page",
"aria-label": "Siteimprove",
"data-observe-key": "top-nav-company-link",
}}
actions={[
{
items: [
{
text: "Users",
onClick: () => console.log("clicked"),
"data-observe-key": "top-nav-users",
},
ActionMenu.divider,
{ text: "Sites", href: "https://siteimprove.com", "data-observe-key": "top-nav-sites" },
{ text: "Groups", href: "https://siteimprove.com", "data-observe-key": "top-nav-groups" },
ActionMenu.divider,
{ text: "Report", href: "https://siteimprove.com", "data-observe-key": "top-nav-report" },
ActionMenu.divider,
{
text: "Subscriptions",
href: "https://siteimprove.com",
"data-observe-key": "top-nav-subscriptions",
},
ActionMenu.divider,
{
text: "All settings",
href: "https://siteimprove.com",
"data-observe-key": "top-nav-all-settings",
},
],
buttonContent: (
<Icon>
<IconSettings />
</Icon>
),
"data-observe-key": "top-nav-settings",
"aria-label": "Settings",
tooltip: "Settings",
},
{
href: "https://siteimprove.com",
children: (
<Icon>
<IconHelpOutline />
</Icon>
),
tooltip: "Help and training",
"data-observe-key": "top-nav-help",
"aria-label": "Help and training",
},
{
onClick: () => console.log("clicked"),
children: (
<Icon>
<IconUser />
</Icon>
),
"data-observe-key": "top-nav-profile",
"aria-label": "Profile",
},
]}
data-observe-key="top-nav"
skipToContentId="properties"
/>
#Properties
#Guidelines
#Best practices
#Do not use when
#Accessibility
Explore detailed guidelines for this component: Accessibility Specifications